home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Languages Suite
/
ProgramD2.iso
/
Borland
/
Borland C++ V5.02
/
CHKBOOK.PAK
/
FXRECDOC.H
< prev
next >
Wrap
C/C++ Source or Header
|
1997-05-06
|
3KB
|
86 lines
// fxrecdoc.h : interface of the CFixedLenRecDoc and CFixedLenRecHint classes
//
// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1995 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
// CFixedLenRecDoc implements the behavior of a transaction-based
// document in which each record has a fixed size. The file has
// a fixed-length header. The derived class can specify the length
// of an extra header, that is, a header in addition to that required
// by CFixedLenRecDoc. This is an abstract class that must be
// derived from.
class CFixedLenRecHint : public CObject
{
DECLARE_DYNAMIC(CFixedLenRecHint)
public:
CFixedLenRecHint();
};
class CFixedLenRecDoc : public CDocument
{
DECLARE_DYNAMIC(CFixedLenRecDoc)
public:
CFixedLenRecDoc();
protected:
CFile m_file; // The file is kept open to do read/writes on per
// transaction basis.
// The following header, and optional extra header implemented
// in the derived class, are updated each time a new record is
// added, or WriteHeader() is called.
struct
{
UINT nRecordCount; // count of records in the file
UINT nRecordLength; // length of fixed-length records
UINT nExtraHeaderLength; // length of additional header written
// by derived class
} m_header;
// Overridables
virtual void* OnCreateNewRecord(int nNewRecordIndex) = 0;
// returns pointer to new record
virtual BOOL OnReadExtraHeader();
virtual void OnWriteExtraHeader(BOOL bNewHeader);
// Operations
public:
virtual void WriteHeader(CFile* pFile, BOOL bNewHeader);
virtual BOOL ReadHeader(CFile* pFile);
// returns FALSE if file can't be interpreted
// Operations used by views
virtual UINT CreateNewRecord(); // creates a new record
UINT GetRecordCount()
{ return m_header.nRecordCount; }
virtual void GetRecord(UINT nRecordIndex, void* pRecord);
virtual void UpdateRecord(CView* pSourceView, UINT nRecordIndex,
void* pRecord);
virtual void UpdateAllViewsWithRecord(CView* pSourceView,
UINT nRecordIndex);
// Implementation
protected:
// Overrides of CDocument member functions
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
// reopen file using m_file
virtual void DeleteContents(); // closes the m_file
virtual void FileSeekRecord(UINT nRecord);
public:
virtual ~CFixedLenRecDoc();
virtual void Serialize(CArchive& ar);
};